Easy2Siksha.com
GNDU Question Paper-2024
BCA 5
th
Semester
SOFTWARE ENGINEERING
Time Allowed: Three Hours Max. Marks: 75
Note: Attempt Five questions in all, selecting at least One question from each section. The
Fifth question may be attempted from any section. All questions carry equal marks.
SECTION-A
1. (a) Define Software. What are its components?
(b) How Spiral model handles the risk management during software development?
Explain.
2 Define the term Metrics. Explain the method of computing Function-Point Quality
Metric in detail using the following example:
Consider a project with the following functional units:
Number of user inputs = 24
Number of user outputs = 12
Number of user enquiries =6
Number of user files = 10
Number of external interfaces =2
Measurement
parameter
Weighting Factor
Simple
Average
Complex
Number of user inputs
3
4
6
Number of user outputs
4
5
7
Number of user enquiries
3
4
6
Easy2Siksha.com
Number of files
7
10
15
Number of external
interfaces
5
7
10
Assuming all complexity adjustment factors and weighing factors as average. Calculate
Delivered Function Points for the Project.
SECTION-B
3. How Effort Estimation, Rayleigh Curve and Quality Assurance Plan helps during planning
of a software project ?
4. (a) Explain different types of coupling using suitable example.
(b) Explain the concept of Top-Down and Bottom-Up approaches of system design with
suitable example.
SECTION-C
5. (a) What are different coding styles used in System Design? Explain with suitable
examples.
(b) Illustrate the significance of Internal Documentation in coding.
6. (a) What do you understand by Test Cases and Test Criteria? Discuss with example.
(b) Explain the concept of White-Box Testing in detail. How it is different from Black-Box
Testing?
SECTION-D
7. Define the term system maintenance. What are its various types ? Illustrate the concept
of corrective and preventive maintenance using suitable example.
8. How Reverse Engineering helps in System Maintenance? Explain using example.
Easy2Siksha.com
GNDU Answer Paper-2024
BCA 5
th
Semester
SOFTWARE ENGINEERING
Time Allowed: Three Hours Max. Marks: 75
Note: Attempt Five questions in all, selecting at least One question from each section. The
Fifth question may be attempted from any section. All questions carry equal marks.
SECTION-A
1. (a) Define Software. What are its components?
(b) How Spiral model handles the risk management during software development?
Explain.
Ans: A Different Beginning A Story of Building a House
Imagine you are planning to build your dream house. Before even laying the first brick, you
think about so many things what materials will be used, how many rooms it should have,
whether it should be modern or traditional, how safe it will be, and most importantly, how
much it will cost.
Now, while constructing the house, you don’t just blindly build everything at once. Instead,
you take it step by step: you draw the blueprint, get feedback, check risks like “what if the
soil is weak?” or “what if the budget goes overboard?”, and only then proceed with
confidence.
This story of building a house is very similar to how software is created. Just as a house is
made up of walls, roof, foundation, and rooms, software also has its own components. And
just as architects use careful planning and safety checks, software engineers use models like
the Spiral Model to handle risks smartly during development.
So, let us begin by first defining what software is, then moving into its components, and
finally, exploring the Spiral Model and how it manages risk.
(a) Define Software. What are its components?
Easy2Siksha.com
Definition of Software
At its simplest, software is a collection of instructions, data, and programs that tell a
computer how to work.
Think of it like the soul of a computer. Without software, the hardware (the physical parts of
a computer like CPU, memory, keyboard, etc.) is just a lifeless body. Software makes the
computer “think,” “decide,” and “perform tasks.”
To explain more clearly:
Hardware = The body (like muscles and bones).
Software = The mind (like thoughts and instructions).
User = The controller who interacts with both.
Thus, software is what brings the hardware to life and allows humans to use computers
effectively.
Characteristics of Software
Before diving into components, let’s understand some special characteristics of software:
1. Intangible You cannot touch software; it exists as programs and data.
2. Doesn’t wear out physically Unlike hardware, software doesn’t rust or break, but
it can become outdated.
3. Engineered, not manufactured It is developed through analysis, coding, and
testing, not produced on an assembly line.
4. Customizable Software can be updated, modified, or tailored according to user
needs.
Components of Software
Just as a car has different parts (engine, wheels, brakes, etc.), software also has
components. These components work together to make software functional and useful.
Let’s break them down one by one.
1. Program Code
This is the heart of software a set of written instructions in programming languages
like Java, Python, or C++.
Example: If you are creating a calculator app, the program code tells the computer
how to add, subtract, multiply, or divide numbers.
2. Documentation
Easy2Siksha.com
Documentation is like the “user manual” and “technical guide” of software.
It explains how the software works, how to install it, how to use it, and how
developers can maintain it in the future.
Without documentation, even the most powerful software becomes confusing.
3. Data Structures
Data is the raw material of software.
Data structures define how information is stored and organized.
Example: In a railway ticket booking software, passenger details, seat numbers, and
timings are stored in databases using specific data structures.
4. Procedures
Procedures are step-by-step methods that describe how software should be used or
executed.
Example: To print a document, the procedure may be open the file → click on print
→ choose printer → confirm.
5. Software Libraries
These are collections of pre-written code that developers can reuse instead of
reinventing the wheel.
Example: A graphics library may already have ready-made functions to draw shapes
or display images.
6. Software Interfaces
Interfaces allow software to interact with hardware, users, or other programs.
Example: An ATM software interacts with bank servers through interfaces to fetch
account details.
Diagram Components of Software
Easy2Siksha.com
This simple diagram shows that software is not just about writing code, but a combination
of multiple components.
(b) How Spiral Model Handles Risk Management During Software Development?
Now that we understand what software is and its components, let’s move into a very
important part of software engineering software development models, specifically the
Spiral Model.
Understanding Software Development Models
When you create software, you don’t just start coding randomly. You follow a systematic
process model that guides you through stages like planning, designing, coding, and testing.
Examples of models are:
Waterfall Model (step-by-step, rigid like a waterfall).
Iterative Model (repeats processes in cycles).
Agile Model (fast and flexible).
Spiral Model (focuses on risk management).
Among these, the Spiral Model is unique because it directly addresses risks during
development.
What is the Spiral Model?
The Spiral Model was introduced by Barry Boehm in 1986. It combines the best features of
the Waterfall Model and Prototyping Model, but its main focus is risk analysis and
management.
Think of it like climbing a spiral staircase with every turn (iteration), you reach a higher
level of development. At each level, risks are identified, analyzed, and resolved before
moving forward.
Phases of the Spiral Model
The Spiral Model is divided into four main phases that repeat in cycles (spirals):
1. Planning Phase
o Objectives are set.
Easy2Siksha.com
o Alternatives are identified.
o Constraints are noted.
2. Risk Analysis Phase
o Possible risks are identified (technical risks, cost risks, time risks, etc.).
o Solutions or strategies are created to minimize these risks.
3. Engineering Phase
o Actual software development happens here (design, coding, testing).
4. Evaluation Phase
o Customers review the progress.
o Feedback is taken.
o Plans for the next spiral are made.
Diagram of Spiral Model
Each spiral loop goes through these four phases, and with every loop, the project grows,
risks reduce, and confidence increases.
How Spiral Model Handles Risk Management
Risk is like a hidden enemy in software development it can delay projects, increase costs,
or even make the project fail. The Spiral Model tackles this enemy head-on in the following
ways:
1. Early Identification of Risks
Unlike other models, the Spiral Model begins every cycle by identifying potential
risks.
Easy2Siksha.com
Example: Suppose you are developing a hospital management system. Risks may
include “what if data security fails?” or “what if the software cannot handle many
patients at once?”
2. Prototyping to Reduce Risk
Spiral Model uses prototypes (early models of the software) to check feasibility.
Example: Before building the full hospital management system, a prototype for
“patient registration” can be created to test if it works well.
3. Customer Involvement
Customers review progress at the end of each cycle.
This reduces the risk of developing something the user doesn’t actually want.
4. Flexibility in Changes
Spiral Model allows changes at any stage without throwing away all progress.
Example: If during development, a new law requires extra data privacy, the model
can easily adapt to this without restarting.
5. Continuous Risk Analysis
Risk management is not done once; it is continuous in every cycle.
This ensures that new risks are identified as the project grows.
Types of Risks Managed in Spiral Model
1. Technical Risks Technology may not work as expected.
2. Cost Risks Budget may exceed.
3. Schedule Risks Project may take longer than expected.
4. Operational Risks Software may not fit with existing systems.
5. User Acceptance Risks Users may reject the software.
Advantages of Spiral Model
Handles risks effectively.
Suitable for large, complex projects.
Encourages customer feedback.
Flexible and adaptable.
Disadvantages
Costly due to continuous risk analysis.
Easy2Siksha.com
Requires experienced project managers.
Not suitable for small projects.
Bringing It All Together The House Analogy Again
Let’s connect back to our story of building a house.
Software Components = Like the materials and instructions for building the house.
Spiral Model = Like the careful planning, checking soil strength, budget, and safety at
every stage before moving to the next floor.
Just as you wouldn’t want your dream house to collapse because of ignoring risks, software
projects also need this careful spiral process to succeed.
Conclusion
Software is the invisible brain of the computer, made up of components like
program code, documentation, data structures, procedures, libraries, and interfaces.
Spiral Model is a software development approach that manages risks through
continuous planning, risk analysis, engineering, and evaluation in a spiral cycle.
By combining structured steps with flexibility and constant risk management, the Spiral
Model ensures that software development is not just fast, but also safe, reliable, and closer
to what the user truly needs.
2 Define the term Metrics. Explain the method of computing Function-Point Quality
Metric in detail using the following example:
Consider a project with the following functional units:
Number of user inputs = 24
Number of user outputs = 12
Number of user enquiries =6
Number of user files = 10
Number of external interfaces =2
Measurement
parameter
Weighting Factor
Simple
Average
Complex
Easy2Siksha.com
Number of user inputs
3
4
6
Number of user outputs
4
5
7
Number of user enquiries
3
4
6
Number of files
7
10
15
Number of external
interfaces
5
7
10
Assuming all complexity adjustment factors and weighing factors as average. Calculate
Delivered Function Points for the Project.
Ans: 1) What are Metrics? a short, friendly definition (story style)
Imagine you’re the manager of a small bakery. You don’t just bake and hope customers like
the bread you count things: loaves sold, hours staff worked, how many complaints arrive
each week. Those counts turn into numbers that tell you how well the bakery is doing. In
software engineering, metrics are the same idea: measurable numbers that tell you
something useful about the product, process, or project. They help you answer questions
like “Are we productive?”, “Is the software reliable?”, or “How big is this system in a
language-independent way?”
Formally, a metric is a quantitative measure used to assess, compare, and track
performance, quality, size, or progress of something. Good metrics are:
Relevant they measure what matters (e.g., delivered functionality, defects).
Objective they can be measured consistently.
Actionable they guide decision-making (e.g., staffing, testing effort).
Comparative they let you compare projects, teams, or releases.
Classic examples in software: lines of code (LOC), defects per KLOC, effort in person-months,
and the star of our problem Function Points (FP), which measure the functional size of
a software system from the user’s point of view.
2) Function Points the idea (short story to keep it engaging)
Think of building a feature-rich vending machine. Users interact by inserting coins (inputs),
getting drinks (outputs), querying prices (enquiries), the machine stores items (internal
files), and talks to payment gateways (external interfaces). If you wanted to measure how
big that machine’s software is — in a way that’s independent of programming language,
lines of code, or framework counting the machine’s functional units makes sense. That’s
Function-Point Analysis (FPA).
Easy2Siksha.com
Function Points measure software size by counting these user-visible components:
External Inputs (EI) user inputs that update internal data (e.g., forms,
transactions).
External Outputs (EO) reports, screens, files produced for users.
External Enquiries (EQ) simple queries that retrieve data without updating it.
Internal Logical Files (ILF) user-recognizable groups of data the system maintains.
External Interface Files (EIF) data the system uses but is maintained by another
system.
Each of these is counted and multiplied by a weighting factor depending on complexity
(Simple/Average/Complex). The sum gives Unadjusted Function Points (UFP). Then a set of
general system characteristics (GSCs) adjusts the UFP into Delivered Function Points (DFP)
a size that accounts for system-wide complexity attributes.
3) The method step-by-step (we’ll walk through the bakery/vending-machine style
story but applied to your numbers)
We’ll now compute Delivered Function Points (DFP) for your project using the provided
data. I’ll explain each step, show the arithmetic clearly, and then interpret the result.
Given functional counts:
Number of user inputs (EI) = 24
Number of user outputs (EO) = 12
Number of user enquiries (EQ) = 6
Number of user files (ILF) = 10
Number of external interfaces (EIF) = 2
Weighting factors table (Simple / Average / Complex) you told us to assume all
complexity weights as average, so we’ll use the “Average” column:
EI average weight = 4
EO average weight = 5
EQ average weight = 4
ILF (files) average weight = 10
EIF average weight = 7
Complexity adjustment factors (GSCs): you said “Assuming all complexity adjustment
factors and weighing factors as average.” Function-Point method defines 14 General System
Characteristics (GSCs), each rated 0 to 5. If each GSC is rated Average = 3, then the Total
Degree of Influence (TDI) = 14 × 3 = 42. The Value Adjustment Factor (VAF) is then
computed by the standard formula:
Easy2Siksha.com
Plugging TDI = 42:
We will use this VAF to adjust the unadjusted FP to Delivered Function Points.
4) Compute the Unadjusted Function Points (UFP) arithmetic shown step-by-step
UFP is the sum over each function type of (count × weight). Using the average weights:
External Inputs contribution = number of inputs × EI weight
= 24 × 4
= (20 × 4) + (4 × 4) = 80 + 16 = 96
External Outputs contribution = number of outputs × EO weight
= 12 × 5
= (10 × 5) + (2 × 5) = 50 + 10 = 60
External Enquiries contribution = number of enquiries × EQ weight
= 6 × 4
= (6 × 4) = 24
Internal Logical Files contribution = number of files × ILF weight
= 10 × 10
= (10 × 10) = 100
External Interface Files contribution = number of EIF × EIF weight
= 2 × 7
= (2 × 7) = 14
Now sum all contributions to get UFP:
UFP = 96 (EI) + 60 (EO) + 24 (EQ) + 100 (ILF) + 14 (EIF)
Stepwise sum:
96 + 60 = 156
156 + 24 = 180
180 + 100 = 280
280 + 14 = 294
So Unadjusted Function Points (UFP) = 294.
(If you want to double-check: 24×4 + 12×5 + 6×4 + 10×10 + 2×7 = 96 + 60 + 24 + 100 + 14 =
294.)
Easy2Siksha.com
5) Apply complexity adjustment → Delivered Function Points (DFP)
We already computed VAF = 1.07 (because TDI = 42 → 0.65 + 0.42).
Delivered Function Points (DFP) = UFP × VAF = 294 × 1.07
Let’s calculate:
294 × 1.00 = 294
294 × 0.07 = 294 × 7 / 100 = (294 × 7) / 100
First compute 294 × 7 = (300−6) × 7 = 2100 − 42 = 2058
So 294 × 0.07 = 2058 / 100 = 20.58
Now sum: 294 + 20.58 = 314.58
So Delivered Function Points (DFP) = 314.58.
Function Points are often reported as a whole number; you can either keep the fractional
value for precision or round sensibly:
Rounded to nearest whole FP: 315 FP
Keep fractional for precision: 314.58 FP
Most practitioners report an integer (so 315 FP), but keep the exact computed value if you
need precise productivity or cost calculations.
6) Put it all together a compact calculation table (visual in text)
Here’s a clear table you can paste into an answer sheet or show to an examiner; it’s concise
and shows the math:
Easy2Siksha.com
TDI (14 GSCs × 3 average) = 42
VAF = 0.65 + 0.01 × TDI = 0.65 + 0.42 = 1.07
Delivered Function Points (DFP) = UFP × VAF = 294 × 1.07 = 314.58 315 FP
7) Interpretation what the number tells you and why it matters
What does ~315 Function Points mean?
It’s a size measure: the system delivers about 315 “points” of user-visible
functionality. It’s independent of programming language.
Use it to estimate effort: if you know historical productivity (for example, a team
historically completes 8 FP/day per person), you can estimate schedule and staffing.
Use it to estimate cost: cost per FP × total FP ≈ rough project cost.
Use it to measure quality: defects per FP (defect density) lets you compare quality
across projects of different sizes.
Why adjust UFP with VAF?
UFP counts raw functional size, but two systems with the same UFP might differ in
complexity because of system-wide factors: transaction rates, performance constraints,
reuse, distributed processing, etc. The VAF (via the 14 GSCs) nudges the size up or down to
reflect those system characteristics.
Limitations to remember:
Rating the 14 GSCs is somewhat subjective; consistency matters.
FP measures functional sizenon-functional requirements (security, performance,
portability) might require effort not captured fully.
Different FP counting rules (IFPUG, NESMA, COSMIC) exist; be clear which one you
use. Here we used the classic IFPUG-style VAF approach.
8) Optional diagram (simple ASCII flow) shows flow of calculation
Easy2Siksha.com
9) A little exam-friendly commentary you can add to the answer paper
Start with a one-line definition: “Metrics are quantitative measures used to assess
aspects of software product or process; Function Points measure software functional
size from the user’s perspective.”
Then briefly list the five function types and why function points are preferable to
LOC in many contexts.
Show the calculation table (as above).
Explicitly state assumptions: “All complexity weights taken as Average; all 14 GSCs
rated Average = 3; therefore VAF = 1.07.”
Conclude with the final DFP and one-sentence interpretation: “Delivered Function
Points = 314.58 (≈ 315 FP), indicating the functional size; use this for effort, cost, and
quality (defect per FP) estimates.”
Add a short note on rounding: “Most organizations report integer FPs (rounded);
keep fractional value for internal precision if needed.”
10) Quick sanity check and closing story note
Back to our bakery: 315 FP is like saying “the bakery provides 315 measurable units of
service” — the number helps you staff bakers, plan ingredients, and estimate how many
ovens you’ll need. In software, Delivered Function Points help you plan human resources,
testing effort, and cost in a language-neutral way.
Final answer (direct):
Unadjusted Function Points (UFP) = 294
TDI (14 GSCs × 3 average) = 42 → VAF = 1.07
Delivered Function Points (DFP) = 294 × 1.07 = 314.58 ≈ 315 FP
SECTION-B
3. How Effort Estimation, Rayleigh Curve and Quality Assurance Plan helps during planning
of a software project ?
Ans: Effort Estimation, Rayleigh Curve, and Quality Assurance Plan in Software Project
Planning
󷈷󷈸󷈹󷈺󷈻󷈼 A Different Beginning
Imagine you are the captain of a ship about to set sail on a long voyage. You have a
destination (the final software product), a crew (the development team), and a map (the
project plan). But before you leave the harbor, you must answer three critical questions:
Easy2Siksha.com
1. How much effort will this journey take? (Effort Estimation)
2. How should the crew’s energy be distributed over time? (Rayleigh Curve)
3. How do we ensure the ship reaches safely without leaks or breakdowns? (Quality
Assurance Plan)
These threeEffort Estimation, Rayleigh Curve, and Quality Assurance Planare like the
compass, the tide chart, and the safety manual of your voyage. Without them, the project
risks drifting aimlessly, exhausting resources, or sinking under poor quality.
Let’s explore each one as part of this story.
󽁗 1. Effort Estimation: Predicting the Energy Needed
Effort estimation is like asking: “How many sailors, how many days, and how much food will
we need for this journey?”
In software terms, it means predicting the time, manpower, and cost required to complete
the project.
Why it matters:
Prevents underestimation (which leads to missed deadlines).
Prevents overestimation (which wastes resources).
Helps managers allocate the right number of developers, testers, and designers.
Techniques used:
Expert Judgment: Asking experienced developers to estimate.
Analogous Estimation: Comparing with past similar projects.
Parametric Models (like COCOMO): Using mathematical formulas.
Agile Estimation: Using story points and planning poker.
󷷑󷷒󷷓󷷔 Analogy: If you’re building a house, effort estimation is like calculating how many bricks,
how many workers, and how many days it will take. Without this, you might run out of
bricks halfway or hire too many workers unnecessarily.
󷇙󷇚󷇜󷇝󷇞󷇟󷇛 2. Rayleigh Curve: The Rhythm of Effort Over Time
Now imagine your ship’s crew. On the first day, they’re just setting up sails—effort is low. In
the middle of the journey, everyone is working at full strengtheffort peaks. Towards the
end, as you near the harbor, the workload decreases.
This natural rise and fall of effort is captured by the Rayleigh Curve.
What is the Rayleigh Curve?
A bell-shaped curve used in software project planning.
Easy2Siksha.com
Shows how effort is distributed over the project timeline.
Effort starts low, rises to a peak during development, and then tapers off as testing
and maintenance finish.
Why it matters:
Prevents overstaffing at the start (when little work exists).
Prevents understaffing in the middle (when workload is highest).
Helps balance cost and schedule by showing the natural flow of effort.
󷷑󷷒󷷓󷷔 Analogy: Think of a marathon runner. They don’t sprint at the start, but gradually
increase speed, peak in the middle, and slow down near the finish line. That’s exactly how
effort flows in a software project.
󺬥󺬦󺬧 3. Quality Assurance Plan: The Safety Net
Even if you estimate effort correctly and distribute it wisely, what if the ship leaks? What if
the software is full of bugs? That’s where the Quality Assurance (QA) Plan comes in.
What is a QA Plan?
A documented strategy that ensures the software meets quality standards and customer
expectations.
Key elements:
Standards and Guidelines: Coding standards, testing methods.
Roles and Responsibilities: Who checks what.
Testing Strategy: Unit testing, integration testing, system testing.
Defect Prevention: Catching errors early instead of fixing them later.
Continuous Improvement: Learning from past mistakes.
Why it matters:
Ensures the final product is reliable, bug-free, and user-friendly.
Saves costfixing a bug during coding is far cheaper than fixing it after release.
Builds customer trust and satisfaction.
󷷑󷷒󷷓󷷔 Analogy: A QA Plan is like a ship’s safety manual—checking lifeboats, inspecting sails,
and ensuring no leaks before setting sail. Without it, even the best-planned journey can end
in disaster.
󹵍󹵉󹵎󹵏󹵐 Diagram: How They Work Together
Easy2Siksha.com
This table shows how each element plays a unique but connected role.
󷇮󷇭 How They Help Together
When combined, these three tools create a balanced project plan:
1. Effort Estimation ensures you know the total resources needed.
2. Rayleigh Curve ensures you apply those resources at the right time.
3. QA Plan ensures the final product is worth delivering.
󷷑󷷒󷷓󷷔 Without effort estimation, you don’t know how big the journey is. 󷷑󷷒󷷓󷷔 Without the
Rayleigh Curve, you don’t know when to row hardest. 󷷑󷷒󷷓󷷔 Without QA, you might reach the
destination but with a broken ship.
Together, they transform chaos into clarity.
󽆪󽆫󽆬 Conclusion
Planning a software project is like preparing for a great voyage. Effort Estimation tells you
how much energy the journey will take. The Rayleigh Curve shows you when to apply that
energy. The Quality Assurance Plan ensures you arrive safely with a product that works.
For students, this makes the concept easy to grasp—because it’s not just about formulas
and charts, but about a living story of a journey. For examiners, it’s enjoyable to read
because it connects technical ideas with human imagination.
So the next time you hear about project planning, remember: it’s not just about coding—it’s
about navigating wisely, rowing at the right time, and ensuring the ship doesn’t sink. That’s
the art of combining Effort Estimation, Rayleigh Curve, and Quality Assurance Plan.
Easy2Siksha.com
4. (a) Explain different types of coupling using suitable example.
(b) Explain the concept of Top-Down and Bottom-Up approaches of system design with
suitable example.
Ans: A Gentle Beginning
Imagine you are working with your friends to build a giant robot. Everyone has a role one
friend is designing the robot’s arms, another is handling the legs, someone is taking care of
the brain (the control system), and you are responsible for the power system.
Now here’s the catch: if all of you keep asking each other too many details about how things
are made, your work will get messy and confusing. But if each of you works independently,
only sharing what is necessary, your robot will be ready much faster, and it will also be
easier to fix if something breaks.
This exact idea of how much one part of a system depends on another part is what
computer scientists call Coupling.
And once your robot parts are ready, you also need to decide: should you design the robot
starting from the big picture (head, body, arms, legs) and then go into details? Or should
you start with small components like gears, sensors, and motors, then combine them to
make bigger parts? These two strategies are nothing but the Top-Down and Bottom-Up
approaches of system design.
So, let us first explore types of coupling in a detailed, story-like manner, and then we’ll dive
into top-down vs. bottom-up approaches.
Part A: Different Types of Coupling
󷊆󷊇 What is Coupling?
In simple words, coupling refers to the degree of dependency between two modules (parts
of a program or system).
If two modules are highly dependent on each other, we say they have high coupling.
If they work independently and only interact when absolutely necessary, we say they
have low coupling.
In system design, low coupling is better because it makes the system flexible, easy to
modify, and less prone to errors.
Now, let’s look at the different types of coupling, moving from worst (tightest dependency)
to best (loosest dependency).
Easy2Siksha.com
1. Content Coupling (Worst Type)
󹶓󹶔󹶕󹶖󹶗󹶘 Definition: Content coupling happens when one module directly interferes with or
modifies the internal details of another module.
󷷑󷷒󷷓󷷔 Example (Story Style):
Imagine you and your friend are cooking. Instead of politely asking your friend for sugar, you
go directly into their kitchen drawer, open their jar, and take sugar without permission. That
means you are interfering with their private space.
In programming, it’s like Module A directly accessing or changing the local variables of
Module B.
󹵋󹵉󹵌 Why bad? Because if Module B changes its internal structure, Module A will break
immediately.
󹵍󹵉󹵎󹵏󹵐 Diagram:
Module A -----> [Inside of Module B]
2. Common Coupling
󹶓󹶔󹶕󹶖󹶗󹶘 Definition: When multiple modules share the same global data, it is called common
coupling.
󷷑󷷒󷷓󷷔 Example:
Imagine a group of friends sharing the same wallet. If one friend takes too much money,
others will be affected. Everyone is dependent on the shared wallet.
In programming, it happens when multiple modules use the same global variables.
󹵋󹵉󹵌 Disadvantage: Any change in global data affects all the modules. Debugging becomes
hard.
󹵍󹵉󹵎󹵏󹵐 Diagram:
Easy2Siksha.com
3. External Coupling
󹶓󹶔󹶕󹶖󹶗󹶘 Definition: This occurs when modules depend on external devices, communication
protocols, or external formats.
󷷑󷷒󷷓󷷔 Example:
Suppose you are making an app that reads from a file format like .txt. If another module
expects the file in .csv, both modules are tightly coupled with the file format.
󹵋󹵉󹵌 Problem: If the external standard changes, multiple modules need changes.
4. Control Coupling
󹶓󹶔󹶕󹶖󹶗󹶘 Definition: When one module controls the behaviour of another module by passing it
information about what to do (like passing a control flag).
󷷑󷷒󷷓󷷔 Example:
Imagine your boss gives you a task but also tells you exactly how to do it. For example, “Print
the file, but if the printer is busy, switch to fax.” Here, you are not free; your boss controls
your method.
In programming, Module A sends a flag to Module B:
Module A Module B (Flag = 1 means print, Flag = 2 means fax)
󹵋󹵉󹵌 Why not good? Because Module A is controlling the logic of Module B. This reduces
independence.
5. Stamp Coupling (Data-structured Coupling)
󹶓󹶔󹶕󹶖󹶗󹶘 Definition: When modules share a composite data structure but only use part of it.
󷷑󷷒󷷓󷷔 Example:
Imagine giving your friend a full passport when they only needed your name. By giving the
whole document, you unnecessarily expose other details.
In programming:
If Module A passes an entire record (like a struct or class) to Module B, but Module B only
uses one field, that is stamp coupling.
󹵋󹵉󹵌 Problem: It exposes unnecessary details and increases dependency.
Easy2Siksha.com
6. Data Coupling (Best Type)
󹶓󹶔󹶕󹶖󹶗󹶘 Definition: Modules share data through parameters. Only the necessary data is passed.
󷷑󷷒󷷓󷷔 Example:
Instead of giving your entire passport, you simply tell your friend your name. That is clean,
clear, and sufficient.
In programming, Module A calls Module B like this:
󹵈󹵉󹵊 Why best? Because modules only share what is required, reducing unnecessary
dependency.
󹵍󹵉󹵎󹵏󹵐 Diagram:
󷈷󷈸󷈹󷈺󷈻󷈼 Summary of Coupling Types
Coupling Type
Dependency
Level
Good/Bad
Content
Coupling
Highest
Worst
Common
Coupling
High
Bad
External
Coupling
Medium-High
Not good
Control
Coupling
Medium
Moderate
Stamp Coupling
Medium-Low
Better
Data Coupling
Lowest
Best
󹵙󹵚󹵛󹵜 Rule of Thumb: Always try to achieve data coupling for best system design.
Easy2Siksha.com
Part B: Top-Down and Bottom-Up Approaches of System Design
Now let’s shift gears and talk about the design approaches.
󷊆󷊇 The Big Question:
When building a system, should you start from the big picture and break it into smaller
parts (Top-Down) or should you start with small parts and combine them into bigger ones
(Bottom-Up)?
Both approaches have their strengths and weaknesses. Let’s explore.
1. Top-Down Approach
󹶓󹶔󹶕󹶖󹶗󹶘 Definition:
In this method, you begin with the overall system and break it into smaller, more detailed
components step by step.
󷷑󷷒󷷓󷷔 Story Example:
Imagine you want to build a house.
First, you design the blueprint of the whole house (rooms, kitchen, garden).
Then, you break it down: what materials are needed for the kitchen, how the
plumbing will work, what tiles will be used in the bathroom.
This is top-down: start from the whole and move towards details.
󹵍󹵉󹵎󹵏󹵐 Diagram:
󹵈󹵉󹵊 Advantages:
Focus on the big picture.
Easier to manage large projects.
Easy2Siksha.com
Ensures clarity of goals.
󹵋󹵉󹵌 Disadvantages:
Lower-level details may be ignored initially.
May cause problems if the overall design is flawed.
2. Bottom-Up Approach
󹶓󹶔󹶕󹶖󹶗󹶘 Definition:
In this method, you begin with the smallest parts and gradually integrate them to form the
larger system.
󷷑󷷒󷷓󷷔 Story Example:
Suppose you are building a car.
First, you design and test small parts like wheels, engine, seats.
Then you assemble them to form the car.
This is bottom-up: start with components, then build bigger systems.
󹵍󹵉󹵎󹵏󹵐 Diagram:
󹵈󹵉󹵊 Advantages:
Focuses on details and ensures reliable components.
Reusable modules can be created.
Testing becomes easier at small levels.
Easy2Siksha.com
󹵋󹵉󹵌 Disadvantages:
Hard to see the big picture in the beginning.
May lead to integration problems later.
󷈷󷈸󷈹󷈺󷈻󷈼 Comparing Top-Down and Bottom-Up
Feature
Top-Down Approach
Bottom-Up Approach
Starting Point
Big picture
Small details
Focus
Overall system
Components
Testing Style
Integration first
Unit testing first
Flexibility
Less flexible
More flexible
Example
Designing house blueprint
Building car from parts
󷡉󷡊󷡋󷡌󷡍󷡎 Conclusion
Coupling and design approaches are like the backbone of system design.
Coupling tells us how tightly or loosely different modules should interact. The goal is
always to reduce dependency and aim for data coupling.
Top-Down and Bottom-Up are two ways of looking at design:
o Top-Down = Big picture to details.
o Bottom-Up = Details to big picture.
Just like when friends build a robot together, if they maintain low coupling and choose the
right design approach, the final system becomes reliable, efficient, and easy to maintain.
SECTION-C
5. (a) What are different coding styles used in System Design? Explain with suitable
examples.
(b) Illustrate the significance of Internal Documentation in coding.
Ans: Coding Styles in System Design and the Significance of Internal Documentation
󷈷󷈸󷈹󷈺󷈻󷈼 A Different Beginning
Easy2Siksha.com
Imagine you walk into a room full of programmers. Everyone is typing furiously, screens
glowing with lines of code. But here’s the twist: one programmer writes code like neat
poetry, another writes like a messy diary, and a third writes like a puzzle only they can solve.
Now, if tomorrow someone else has to maintain this code, which one would they prefer?
Obviously, the neat, well-structured one.
This is where coding styles and internal documentation come in. They are not just about
writing code that worksthey are about writing code that lives on, code that others can
read, understand, and improve. In system design, these practices are the difference
between a chaotic jungle and a well-planned city.
Part (a): Different Coding Styles in System Design
Coding styles are like dialects of the same language. The logic may be the same, but the way
it’s expressed can vary. Let’s explore some important ones with examples.
1. Structured Coding Style
Focuses on breaking the program into small, logical blocks.
Uses loops, conditionals, and functions to avoid “spaghetti code.”
Example (Python):
python
for student in students:
if student.marks >= 50:
print(student.name, "Passed")
else:
print(student.name, "Failed")
󷷑󷷒󷷓󷷔 This style makes the flow cleareasy to read, easy to debug.
2. Object-Oriented Coding Style (OOP)
Organizes code into classes and objects.
Encourages reusability, modularity, and abstraction.
Example (Java):
class Student {
String name;
int marks;
void checkResult() {
if(marks >= 50)
System.out.println(name + " Passed");
else
Easy2Siksha.com
System.out.println(name + " Failed");
}
}
󷷑󷷒󷷓󷷔 Perfect for large systems where real-world entities (like students, employees, products)
can be modeled as objects.
3. Functional Coding Style
Treats computation as evaluation of mathematical functions.
Avoids changing state and mutable data.
Example (Haskell/Python):
passed_students = list(filter(lambda s: s.marks >= 50, students))
󷷑󷷒󷷓󷷔 This style is concise and powerful, especially for data-heavy applications.
4. Modular Coding Style
Breaks the system into independent modules.
Each module handles a specific responsibility.
Example (C):
// math_module.c
int add(int a, int b) {
return a + b;
}
󷷑󷷒󷷓󷷔 Encourages reusability and makes large systems manageable.
5. Naming and Formatting Styles
Even within the same paradigm, style matters.
Examples:
o CamelCase: studentName
o snake_case: student_name
o PascalCase: StudentName
󷷑󷷒󷷓󷷔 Consistency in naming and indentation makes code readable across teams.
6. Design Pattern-Oriented Style
Uses established design patterns like Singleton, Factory, Observer, etc.
Ensures scalability and maintainability.
Easy2Siksha.com
Example (Singleton in Java):
class Database {
private static Database instance;
private Database() {}
public static Database getInstance() {
if(instance == null) {
instance = new Database();
}
return instance;
}
}
󷷑󷷒󷷓󷷔 This ensures only one database connection object exists.
󹵍󹵉󹵎󹵏󹵐 Diagram: Coding Styles in System Design
Part (b): Significance of Internal Documentation in Coding
Now, imagine you inherit a project from another programmer. The code works, but there
are no comments, no explanations. It feels like walking into a library where all the books
have blank covers—you don’t know what’s inside.
That’s why internal documentation is vital. It’s the practice of writing explanations inside
the code to guide future developers.
1. Helps in Understanding the Code
Comments explain why something is done, not just what.
Example:
# Check if student has passed based on marks >= 50
if student.marks >= 50:
print("Passed")
Easy2Siksha.com
2. Supports Maintenance
Software evolves. Documentation ensures that when someone updates the code
years later, they don’t break it accidentally.
3. Improves Team Collaboration
In large projects, multiple developers work together. Internal documentation acts as
a common language.
4. Speeds Up Onboarding
New team members can quickly understand the system by reading comments and
docstrings.
5. Acts as a Knowledge Transfer Tool
If the original developer leaves, documentation ensures the project doesn’t collapse.
Types of Internal Documentation:
Inline Comments: Short notes within code.
Function/Method Headers: Explain purpose, parameters, return values.
Docstrings (Python/JavaDoc): Formal documentation embedded in code.
Code Annotations: Metadata for tools and frameworks.
󹵍󹵉󹵎󹵏󹵐 Diagram: Role of Internal Documentation
󷇮󷇭 Bringing It All Together
Coding styles ensure that the code is structured, readable, and maintainable. They
are like the grammar of a languagewithout them, communication breaks down.
Easy2Siksha.com
Internal documentation ensures that the story behind the code is preserved. It’s like
writing footnotes in a book so that future readers understand the context.
Together, they make system design not just about building software, but about building
software that lasts, grows, and can be understood by anyone who touches it.
󽆪󽆫󽆬 Conclusion
In the world of software, writing code is only half the job. The other half is writing it in a way
that others can read, understand, and extend. Different coding stylesstructured, object-
oriented, functional, modular, pattern-basedgive us the tools to express logic clearly.
Internal documentation ensures that this clarity survives time, team changes, and system
evolution.
For students, this makes coding less about typing commands and more about telling a story
that others can follow. For examiners, it makes grading a joy—because the answer doesn’t
just list facts, it paints a picture of coding as a living, breathing craft.
6. (a) What do you understand by Test Cases and Test Criteria? Discuss with example.
(b) Explain the concept of White-Box Testing in detail. How it is different from Black-Box
Testing?
Ans: 󷊆󷊇 A Gentle Beginning
Imagine you are planting a garden. You buy seeds, water them, and wait for them to grow.
But before you serve the vegetables to your family, you want to make sure they are healthy
and safe. So, you check:
Did the seeds sprout properly?
Are the leaves green and healthy?
Is the taste good enough?
In the same way, when software engineers build a program, they don’t just release it to
users. They test itchecking whether it works as expected, whether the inputs give correct
outputs, and whether the program is strong enough to handle unexpected situations.
This process of checking is called Software Testing. And in this story, two characters are
very important:
1. Test Cases like small questions we ask the software.
2. Test Criteria like the conditions we set to decide if the software is “good enough.”
And then comes a special method of testing called White-Box Testing, which allows us to
look inside the software’s “skeleton and veins” (the code itself), and compare it with Black-
Easy2Siksha.com
Box Testing, where we treat the software like a mysterious box and only check inputs and
outputs.
󷋇󷋈󷋉󷋊󷋋󷋌 Part (a): Test Cases and Test Criteria
What are Test Cases?
Think of a test case as a small experiment.
󷷑󷷒󷷓󷷔 Definition:
A test case is a set of conditions, inputs, actions, and expected results that are designed to
check whether a particular part of the software works correctly.
It is like asking the program:
“If I give you this input, what will you give me back?”
“Will you behave properly even if I give you something unexpected?”
Each test case contains:
1. Test Case ID (like a roll number for identification)
2. Description (what are we testing?)
3. Preconditions (what needs to be true before running the test?)
4. Input Data (what we provide to the system)
5. Test Steps (how to perform the test)
6. Expected Result (what should happen)
7. Actual Result (what really happened)
8. Status (Pass/Fail based on comparison)
Example of Test Case
Imagine we are testing the Login feature of a website.
Test Case 1:
Test Case ID: TC001
Description: Check login with correct username and password.
Preconditions: User is registered.
Input Data: Username = “Rahul123”, Password = “abc@123”
Steps:
1. Open login page
2. Enter username and password
3. Click “Login”
Easy2Siksha.com
Expected Result: User should be redirected to homepage.
Actual Result: Homepage displayed.
Status: Pass 󷄧󼿒
Test Case 2:
Test Case ID: TC002
Description: Check login with wrong password.
Input Data: Username = “Rahul123”, Password = “wrongpass”
Expected Result: Error message “Invalid Password” should appear.
Actual Result: Error message displayed.
Status: Pass 󷄧󼿒
So, test cases are like questions that help us confirm whether the software behaves
correctly in different situations.
What is Test Criteria?
If test cases are the questions, then test criteria are the rules we use to judge whether the
software has been tested enough.
󷷑󷷒󷷓󷷔 Definition:
Test criteria are the conditions or standards that help us decide:
When to stop testing.
Whether a software component has passed or failed.
How much testing is considered sufficient.
There are two main types of criteria:
1. Exit Criteria These define when we can stop testing. Example:
o All critical test cases must pass.
o 95% of planned test cases must be executed.
o No high-severity bugs should remain unresolved.
2. Suspension Criteria These define when we must pause testing. Example:
o If too many defects are found in early test cases, testing is suspended until
the code is fixed.
Example of Test Criteria
Suppose we are testing an online shopping app.
Exit Criteria:
Easy2Siksha.com
o All test cases related to payment must pass.
o Less than 2% of medium-level bugs can remain open.
o Performance test shows checkout process finishes in under 5 seconds.
Suspension Criteria:
o If login itself is not working, stop testing other modules until it is fixed.
So, test cases are like the detailed experiments, while test criteria are the big-picture rules
telling us when testing is enough.
󷋇󷋈󷋉󷋊󷋋󷋌 Part (b): White-Box Testing
Now let’s move into another exciting part of our story: White-Box Testing.
What is White-Box Testing?
Imagine you are a doctor. When a patient comes to you with pain, you don’t just look at the
face and say “you’re fine.” You might check inside the body using X-rays or blood tests.
Similarly, in White-Box Testing, testers don’t just check inputs and outputs; they actually
look inside the source code of the program.
󷷑󷷒󷷓󷷔 Definition:
White-Box Testing (also called Structural Testing, Glass-Box Testing, or Clear-Box Testing)
is a testing method where the internal logic, structure, and code of the software are
examined and tested.
It focuses on questions like:
Are all lines of code executed at least once?
Are all conditions (like if-else) working properly?
Are loops executing correctly?
Techniques of White-Box Testing
There are several techniques:
1. Statement Coverage
o Ensures every statement in the code is executed at least once.
2. Branch Coverage (Decision Coverage)
o Ensures every decision (true/false) is tested.
3. Condition Coverage
o Ensures each condition in a decision is tested separately.
4. Path Coverage
o Ensures all possible paths in the program are tested.
Easy2Siksha.com
Example of White-Box Testing
Consider this simple code snippet:
if (x > 0):
print("Positive")
else:
print("Non-Positive")
Statement Coverage: Run with x = 5 (covers “Positive”), x = -3 (covers “Non-
Positive”).
Branch Coverage: Same as above, because we tested both branches (if and else).
So, White-Box Testing makes sure every part of the code is tested, not just the outside
behaviour.
Diagram: Black-Box vs White-Box Testing
󷋇󷋈󷋉󷋊󷋋󷋌 Difference Between White-Box and Black-Box Testing
Aspect
White-Box Testing
Black-Box Testing
View
Internal (code, logic, structure)
External (inputs & outputs only)
Tester’s
Knowledge
Needs programming knowledge
No need for code knowledge
Focus
Code coverage, logic, paths
Functionality, behaviour
Example
Testing all branches in an “if”
statement
Testing login form with
valid/invalid data
Easy2Siksha.com
Also Called
Structural, Glass-Box Testing
Functional, Behavioural Testing
Used For
Unit Testing, Integration Testing
System Testing, Acceptance
Testing
󷊋󷊊 Wrapping Up
So, let’s stitch the story together:
Test Cases are the small experiments we design to check whether software works
properly. They include inputs, expected outputs, and actual results.
Test Criteria are the big rules that help us decide when to stop or continue testing.
White-Box Testing is like a doctor’s X-ray—it looks inside the software’s code,
making sure every statement, branch, and path works.
It is different from Black-Box Testing, which treats software as a closed box,
checking only the inputs and outputs.
In real life, both methods are used together to ensure the software is healthy, reliable, and
ready for users.
SECTION-D
7. Define the term system maintenance. What are its various types ? Illustrate the concept
of corrective and preventive maintenance using suitable example.
Ans: System Maintenance: Types and Examples of Corrective & Preventive Maintenance
󷈷󷈸󷈹󷈺󷈻󷈼 A Different Beginning
Imagine you’ve just bought a brand-new car. It shines, runs smoothly, and feels perfect. But
as months pass, the tires wear out, the oil needs changing, and sometimes the engine
makes a strange noise. If you ignore these signs, the car will eventually break down.
Software systems are no different. When first developed, they work beautifully. But over
time, users discover bugs, technology changes, and new requirements emerge. To keep the
system “alive” and useful, we need system maintenance.
󹻯 Definition of System Maintenance
System maintenance is the process of modifying, updating, and improving a software
system after it has been delivered to the user.
It ensures that the system:
Easy2Siksha.com
Continues to function correctly.
Adapts to new environments (hardware, operating systems, policies).
Improves in performance and usability.
Prevents future failures.
󷷑󷷒󷷓󷷔 In short, system maintenance is like the healthcare of softwareit fixes problems,
adapts to changes, and prevents future breakdowns.
󺬣󺬡󺬢󺬤 Types of System Maintenance
Scholars and engineers usually classify software/system maintenance into four main types:
1. Corrective Maintenance
What it is: Fixing errors, bugs, or faults discovered after the system is in use.
Nature: Reactive (done after a problem occurs).
Example: A banking app crashes when users try to transfer money above a certain
limit. Developers fix the bug so transactions work smoothly.
2. Adaptive Maintenance
What it is: Modifying the system to adapt to changes in the environment.
Nature: Adjustment to external changes.
Example: Updating software to work with a new version of Windows or integrating
with a new payment gateway.
3. Perfective Maintenance
What it is: Enhancing the system by adding new features or improving performance.
Nature: Improvement-oriented.
Example: Adding a “dark mode” feature in a mobile app because users requested it.
4. Preventive Maintenance
What it is: Making changes to prevent future problems.
Nature: Proactive (done before issues occur).
Example: Optimizing code, updating documentation, or running security patches to
avoid future vulnerabilities.
󹵍󹵉󹵎󹵏󹵐 Diagram: Types of System Maintenance
Easy2Siksha.com
󷘹󷘴󷘵󷘶󷘷󷘸 Corrective vs Preventive Maintenance (with Examples)
Let’s illustrate these two in detail, since the question emphasizes them.
Corrective Maintenance
Definition: Fixing problems after they are reported.
Analogy: Like repairing a punctured tire after your car breaks down on the road.
Example in Software:
o A university’s online exam portal crashes when too many students log in at
once.
o The IT team identifies a coding error in the session management module.
o They fix the bug and redeploy the system.
Outcome: The system is restored to normal functioning.
Preventive Maintenance
Definition: Making improvements to avoid problems in the future.
Analogy: Like servicing your car regularly to prevent breakdowns.
Example in Software:
o The same university portal is expected to handle more students next year.
o Before the problem occurs, developers optimize the database queries and
add load-balancing.
o They also update security patches to prevent hacking attempts.
Outcome: The system avoids future crashes and remains secure.
󹵍󹵉󹵎󹵏󹵐 Diagram: Corrective vs Preventive Maintenance
Easy2Siksha.com
󷇮󷇭 Why Maintenance Matters
Longevity: Just like regular health check-ups extend human life, maintenance
extends the life of software.
Cost-saving: Preventive maintenance is cheaper than fixing major breakdowns later.
User Satisfaction: A well-maintained system keeps users happy and loyal.
Adaptability: Technology changes fast—maintenance ensures the system doesn’t
become obsolete.
󽆪󽆫󽆬 Conclusion
System maintenance is not just a technical activity—it’s the lifeline of software. It ensures
that systems remain reliable, adaptable, and efficient long after their initial release.
Corrective maintenance is like a doctor treating a patient after illness.
Preventive maintenance is like a doctor giving vaccines and health advice to avoid
illness.
Together with adaptive and perfective maintenance, they form the complete healthcare
system for software.
For students, this makes the concept easy to remember: software is like a living beingit
needs care, treatment, and prevention. For examiners, this answer is enjoyable because it
doesn’t just list types, but narrates them as a story of survival and growth.
Easy2Siksha.com
8. How Reverse Engineering helps in System Maintenance? Explain using example.
Ans: A Different Beginning A Story of an Old Machine
Imagine you are walking through your grandfather’s garage. In one corner, you see an old
but very useful machine. It still works, but nobody remembers how it was built or how
exactly it functions. There are no manuals, no blueprints, and the engineer who designed it
retired long ago.
Now, one day the machine starts showing problems it makes unusual sounds and
sometimes stops working. You call a mechanic, but even he scratches his head because
there are no instructions available.
So, what do you do?
You carefully open the machine, piece by piece, study how each part is connected, and
create your own notes and diagrams. By doing this, you understand how the machine
works without having the original design. Once you understand it, you can repair it, replace
worn-out parts, and even improve it.
This process of breaking down a system to understand its design, structure, and working is
what we call Reverse Engineering.
And this same idea is used in System Maintenance whether we talk about software
systems, old hardware, or large industrial equipment.
What is Reverse Engineering?
In simple words:
󷷑󷷒󷷓󷷔 Reverse Engineering is the process of taking an existing product or system apart to
study its design and understand how it works.
In software: It means analyzing a program’s code, structure, or behavior to figure out
its hidden logic.
In hardware: It means dismantling a device or equipment to understand its
functioning.
The goal is not to copy, but to understand, maintain, repair, or improve.
Why is Reverse Engineering Needed in System Maintenance?
Think of maintenance as the "health check-up" of systems. Just like humans need doctors,
machines and software need maintenance to keep working. But maintenance becomes very
difficult when:
Easy2Siksha.com
The original documentation is missing (no manuals, no source code).
The system is very old, and its creators are no longer available.
The technology is outdated, and no one remembers how it was built.
In such cases, reverse engineering acts like a "detective tool." It helps engineers:
1. Understand the system how it was built, how it works.
2. Identify problems which parts are failing or outdated.
3. Modify or upgrade make improvements without needing the original design.
4. Ensure compatibility integrate old systems with new ones.
How Reverse Engineering Helps in System Maintenance
Let’s break this down into clear steps and add a simple example to make it more relatable.
1. Understanding the Structure
When a system is too complex, engineers use reverse engineering to create diagrams,
flowcharts, or models that explain how different parts are connected.
󷄧󼿒 Example: Suppose a company is using a very old payroll software. The source code is
lost, but employees still rely on it every month. By reverse engineering the software, IT
experts can figure out how salary is calculated, what rules are applied, and how data is
stored. Once they know this, they can maintain it or even rebuild a modern version.
2. Detecting Faults
Sometimes a system stops working, and no one knows why. Reverse engineering helps in
tracing errors by studying the inner logic.
󷄧󼿒 Example: Think of a car engine that suddenly stalls. A mechanic may reverse-engineer
the parts to find that a small valve is clogged. Similarly, in system maintenance, engineers
trace the hidden code or hardware circuits to find errors.
3. Creating Documentation
Many old systems have no manuals. Reverse engineering allows engineers to recreate
missing documentation. This documentation is extremely helpful for future maintenance.
Easy2Siksha.com
󷄧󼿒 Example: In the case of old government databases, reverse engineering helps in
documenting how the system stores records, which allows new IT teams to maintain it
easily.
4. Replacing Outdated Components
Sometimes parts are no longer available in the market. Reverse engineering helps in
designing replacement parts.
󷄧󼿒 Example: An old railway signaling system may have a broken relay circuit. The original
manufacturer shut down years ago. By reverse-engineering the circuit, engineers can design
a new replacement that works exactly the same.
5. Improving Performance
Once the system is understood, engineers can upgrade it for better efficiency.
󷄧󼿒 Example: A banks legacy software may be slow because it was designed decades ago.
Reverse engineering can help programmers optimize the code, making it faster and more
secure.
Diagram Reverse Engineering in System Maintenance
Here’s a simple diagram to visualize the process:
Real-Life Example Windows XP in Banks
Easy2Siksha.com
Many banks in India and other countries continued using Windows XP long after Microsoft
stopped supporting it. Without official updates, the system became vulnerable.
Here, reverse engineering helped IT teams:
Study how XP worked internally.
Build custom security patches.
Maintain compatibility with banking applications.
Without reverse engineering, banks would have faced huge risks and expenses in
completely rebuilding their systems overnight.
Benefits of Reverse Engineering in System Maintenance
1. Keeps old systems alive even without original support.
2. Reduces cost no need to rebuild everything from scratch.
3. Improves security hidden flaws can be detected.
4. Supports innovation once the system is understood, it can be upgraded.
5. Saves time instead of guessing, engineers get a clear blueprint.
Conclusion A Detective Tool for Maintenance
Reverse engineering is like a detective’s magnifying glass in the world of system
maintenance. It helps us peek inside old, undocumented, or mysterious systems,
understand how they work, and keep them running smoothly.
Just like opening your grandfather’s old machine to study its parts, engineers use reverse
engineering to maintain old software, hardware, or complex systems. Without it, many
important systems would stop working, and organizations would face huge difficulties.
In short, Reverse Engineering is not just about breaking down systems it is about giving
them a second life, keeping them useful, and ensuring they continue to serve people for
years to come.
“This paper has been carefully prepared for educational purposes. If you notice any mistakes or
have suggestions, feel free to share your feedback.”